﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GandA.Component.DataAccess.SQLServer;
using CLab.Common.Constantes;
using CLab.BusinessEntity;
using System.Data;

namespace CLab.DAO
{
    public class SoporteServiceDAO
    {
        public int GuardaSoporte(Soporte s)
        {
            SQLParameterCollection paramsSql = new SQLParameterCollection();
            int idSoporte = 0;

            paramsSql.Add(new SQLParameter(Parametros.pnIdSoporte, s.IdSoporte, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.psAsunto, s.Asunto, SQLParameter.vEnumSqlDbType.VarChar, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdEstatus, s.IdEstatus, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pnIdLaboratorio, s.IdLaboratorio, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.pdISucursal, s.IdSucursal, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));

            try
            {
                DataSet ds = new SQL().ExecuteQueryStoreProcedure("spGuardaSoporte", paramsSql);
                if (ds.Tables[0].Rows.Count > 0)
                {
                    idSoporte = CLab.Common.Util.Convert.ToInt(ds.Tables[0].Rows[0][Columnas.IdSoporte]);
                    s.SeProcesa = CLab.Common.Util.Convert.ToInt(ds.Tables[0].Rows[0][Columnas.SeProcesa]);
                    s.IdSoporte = idSoporte;
                }

                return idSoporte;
            }
            catch (SQLException ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public void GuardaMensaje(int? idSoporte, string msg, string usuario)
        {
            SQLParameterCollection paramsSql = new SQLParameterCollection();

            paramsSql.Add(new SQLParameter(Parametros.pnIdSoporte, idSoporte, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.psMsg, msg, SQLParameter.vEnumSqlDbType.VarChar, SQLParameter.vEnumParameterDirection.vInput));
            paramsSql.Add(new SQLParameter(Parametros.psUsuario, usuario, SQLParameter.vEnumSqlDbType.VarChar, SQLParameter.vEnumParameterDirection.vInput));

            try
            {
                new SQL().ExecuteNonQueryStoreProcedure("spGuardaMensaje", paramsSql);
            }
            catch (SQLException ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public DataSet ObtenMensajes(int idSoporte)
        {
            SQLParameterCollection paramsSql = new SQLParameterCollection();
            
            paramsSql.Add(new SQLParameter(Parametros.pnIdSoporte, idSoporte, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));

            try
            {
                return new SQL().ExecuteQuerySP("spObtenMensajes", paramsSql);
            }
            catch (SQLException ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public DataSet ObtenListaSoporte()
        {
            SQLParameterCollection paramsSql = new SQLParameterCollection();

            ////paramsSql.Add(new SQLParameter(Parametros.pnIdSoporte, idSoporte, SQLParameter.vEnumSqlDbType.Int, SQLParameter.vEnumParameterDirection.vInput));

            try
            {
                return new SQL().ExecuteQuerySP("spObtenListaSoporte");
            }
            catch (SQLException ex)
            {
                throw new Exception(ex.Message);
            }
        }
    }
}
